Building of a system is divided into three phases : a design phase, a development phase and an operation phase. In general, functions at the design phase, implementation at the development phase and performance at the operation phase are major issues, respectively. These phases appear not only on building a new system but also on modifying an existing system.
Sufficient computer resource for providing functions without any problem is required in order for the system to give sufficient performance at the operation phase. The required amount of the computer resource depends on load that is caused when providing the functions. A function causing less load can be provided by less computer resource, while a function causing much load requires much computer resource. Therefore, to measure system load is desirable in order to evaluate system performance.
The followings are known as techniques for measuring the system load at the operation phase. For example, it is possible to count an invocation count of each function in a program by using a profiling technique disclosed in a document “gprof: A Call Graph Execution Profiler, by S. Graham, P. Kessler and M. Mckusick, Proceedings of the 1982 SIGPLAN Symposium on Compiler Construction, Vol. 17, No. 6, pp. 120-126, 1982.” Moreover, Japanese Patent Publication JP-2005-190277A discloses a method of counting invocation frequencies of server programs based on IP addresses and port numbers which can be obtained by observing communications between the server programs.
If deficiency in the system performance is discovered at the operation phase, the design and the like may be subject to revision in order to achieve sufficient performance. in this case, however, enormous process-turning-back is caused, which results in increase in costs for building the system. Conversely, if the system performance and the system load can be estimated at the upstream phase, it is possible to suppress the process-turning-back and thus suppress the increase in costs. In particular, to estimate the system load at the design phase is effective for reducing costs for building the system.
However, techniques that are conventionally available at the design phase relate mainly to functional design of the system. For example, a document “AllFusion (registered trademark) ERwin (registered trademark) Data Modeler r7” introduces “ERwin (registered trademark) ” as a functional design tool for database. This tool provides such functions as conversion of logical design into physical design, optimization of individual processing, and reverse engineering of existing database. Moreover, Japanese Patent Publication JP-H08-202541 discloses a method of mutually reflecting DFD (Data Flow Diagram) change and ER (Entity Relationship) change. However, these tool and method cannot estimate the system load at the design phase.
In recent years, a “multi-layer system” having a hierarchical structure is increasing. In the multi-layer system, a service request is pipeline-processed by a plurality of server layers in order to respond to frequent changes in processing content and to easily improve performance. A three-layer system that performs display processing in a web layer, arithmetic processing in an application layer and data processing in a database layer is known as a typical multi-layer system. The performance of such a multi-layer system is determined mainly by performance of a bottleneck layer among a plurality of server layers. In the case of the above-mentioned three-layer system, for example, the database layer is in general the bottleneck and performance of the database layer determines the performance of the three-layer system. Therefore, in order to quantitatively estimate the performance of the three-layer system, it is desirable to quantitatively estimate load imposed on the database layer which tends to be the bottleneck layer.
Hierarchical load is imposed on the database layer. In the multi-layer system, processing in an upper layer invokes processing in a lower layer. That is, processing invoked by a service request invokes another processing, and the invoked processing invokes still another processing, and thus the processing is invoked hierarchically. Such the processing is hereinafter referred to as “hierarchical processing”. The hierarchical load means load caused by the hierarchical processing that is thus hierarchically invoked. The database layer typically is the lowest layer in the multi-layer system. Therefore, the hierarchical load is imposed on the database layer.
Most of processing requests to the database layer are issued with “DML (Data Manipulation Language) sentence”. The DML sentence is a part of SQL (Structured Query Language) sentence that is used for inquiry to database. The SQL sentence is roughly classified into three kinds: DML sentence, DDL (Data Definition Language) sentence and DCL (Data Control Language) sentence. Most loads are caused by processing of the DML sentence. The DML sentence includes “select sentence” instructing data extraction, “update sentence” instructing data update, “insert sentence” instructing data insertion, “delete sentence” instructing data deletion and so forth. A table whose data is manipulated, namely, an access-object data set is specified in the DMI, sentence. It should be noted that processing content and processing amount vary depending on the kind of the DML sentence, even if access data amount is the same. For example, only data read processing is executed in the select sentence, while not only data writing processing but also processing of writing data lock and log are executed in the update sentence.